home *** CD-ROM | disk | FTP | other *** search
/ Aminet 8 / Aminet 8 (1995)(GTI - Schatztruhe)[!][Oct 1995].iso / Aminet / dev / src / Scan2.lha / Scan-Doubled.S < prev   
Text File  |  1995-07-10  |  9KB  |  394 lines

  1. ; © 1995 by Fabrizio Farenga
  2. ;
  3. ; f.farenga@agora.stm.it
  4. ; http://www.agora.stm.it/htbin/wwx?fi^F.Farenga
  5. ;
  6. ; ##############################################################
  7. ;
  8. ; Build-up a scan-doubled hi-res noflicker screen (DBLPAL noflicker)
  9. ; by-passing O.S.
  10. ;
  11. ; ##############################################################
  12. ;
  13. ; These examples are provided "as-is" and are subject to change;
  14. ; no warranties are made.  All use is at your own risk.
  15. ; No liability or responsibility is assumed.
  16. ;
  17. ;
  18. ;
  19. ; ** USE THE O.S. LUKE! **
  20. ;
  21.  
  22.  
  23.  
  24.     incdir "include:"
  25.     include "exec/exec.i"
  26.     include "exec/exec_lib.i"
  27.     include "graphics/graphics_lib.i"
  28.     include "graphics/rastport.i"
  29.     include "intuition/intuition_lib.i"
  30.     include "dos/dos.i"
  31.     include "dos/dos_lib.i"
  32.  
  33.     include    "AGA_Custom.i"
  34.  
  35. PALSYNC:    EQU $0020
  36. NTSCSYNC:    EQU $0000
  37. DOUBLESYNC:    EQU $1B88
  38.  
  39.     Section code,CODE
  40.  
  41.  
  42. SCL:    EQU    (640*512*8)/8        ;Screen 320*200*256c size
  43. SCPL:    EQU     (640*512)/8        ;Single plane size
  44.  
  45. Start:
  46.     CALLEXEC Forbid
  47.  
  48.     moveq    #0,D0            ;Opens  graphics.library
  49.     lea    GFX_Name,A1
  50.     CALLEXEC OpenLibrary
  51.     move.l    d0,_GFXBase
  52.  
  53.     move.l    d0,A5
  54.     move.l    $26(A5),OLDCOP        ;Saves the original Copper-lists
  55.     move.l    $32(a5),OLDCOP2
  56.  
  57.     lea    Intuition_Name,A1    ;Opens intuition.library
  58.     moveq    #0,D0
  59.     CALLEXEC OpenLibrary
  60.     move.l    d0,Intuition_Base
  61.  
  62.     lea    Dos_Name,A1
  63.     moveq    #0,D0
  64.     CALLEXEC OpenLibrary
  65.     move.l    D0,_DOSBase
  66.  
  67. ;    MOVE.L  #0,A1        ;load a Null ViewPort
  68. ;    move.l    _GFXBase,A6
  69. ;    JSR     _LVOLoadView(A6)
  70.  
  71. ;    JSR     _LVOWaitTOF(A6)   ;Wait two 
  72. ;    JSR     _LVOWaitTOF(A6)   ;V retrace.  
  73.  
  74.     move.w    #DOUBLESYNC,BEAMCON0    ;Turn on DOUBLESYNC
  75.  
  76.     move.l    #COP0,COP1LC
  77.  
  78.     move.w    DMACONR,OLDDMACON
  79.  
  80.     move.w    #$7fff,DMACON
  81.     move.w    #%1000001110000000,DMACON
  82.  
  83.     move.l    #SCL,D0
  84.     move.l    #MEMF_CHIP,D1
  85.     CALLEXEC AllocMem
  86.     move.l    D0,ScrBuffer
  87.     beq    NotEnoghMem
  88.  
  89.     jsr    LoadPicture
  90.     jsr    SetupScreenBuffers
  91.  
  92.     move.l    #COPA,COP1LC
  93.  
  94.     jsr    WaitLMB
  95.  
  96.     move.l    #COP0,COP1LC
  97.  
  98.     move.l    #SCL,D0
  99.     move.l    ScrBuffer,A1
  100.     CALLEXEC FreeMem
  101. NotEnoghMem:
  102.  
  103. Exit:                ;Exits safely.
  104. ;-----------------------
  105.  
  106.     move.l    OLDCOP,cop1lc
  107.     move.w    #0,copjmp1
  108.     move.l    OLDCOP2,cop2lc
  109.  
  110. ;Read original intuition sync
  111.     move.l    _GFXBase,a6            ;Is graphics.library >V36?
  112.     cmp.w    #36,$14(a6)            ;
  113.     blo    NoViewExtra            ;If not, ViewExtra doesn't
  114.                         ;exist...
  115.  
  116.     move.l    $22(a6),a0            ;Take active View.
  117.     move.l    _GFXBase,a6            ;Ask for extensions.
  118.     jsr    -702(a6)            ;Gfx _GfxLookUp
  119.     tst.l    d0                ;If no extensions available,
  120.     beq    NoViewExtra            ;no ViewPort extra!
  121.     move.l    d0,a0                ;
  122.     move.l    $1c(a0),a0            ;Read ptr to Monitor
  123.     move.w    $28(a0),d0            ;Read Monitor Sync,
  124.     move.w    d0,BEAMCON0            ;and write it into the
  125.                         ;Custom Sync Register.
  126. NoViewExtra:
  127.  
  128.     move.l    Intuition_Base,A6
  129.     move.l    60(A6),A0
  130.     jsr    _LVOMakeScreen(A6)
  131.  
  132.     move.l    Intuition_Base,A6
  133.     jsr    _LVORethinkDisplay(A6)
  134.  
  135.     move.l    _GFXBase,A1        ;Closes graphics.library
  136.     CALLEXEc CloseLibrary
  137.  
  138.     move.l    Intuition_Base,A1    ;Closes intuition.library
  139.     CALLEXEc CloseLibrary
  140.  
  141.     move.l    _DOSBase,A1        ;Closes dos.library
  142.     CALLEXEC CloseLibrary
  143.  
  144.     bset    #15,OLDDMACON        ;Restore DMACON
  145.     move.w    OLDDMACON,dmacon
  146.  
  147.     CALLEXEC Permit
  148.  
  149.     rts
  150.  
  151. ;+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
  152.  
  153.  
  154. SetupScreenBuffers:
  155.     lea    COPA_PLANES,A0
  156.     move.l    ScrBuffer,D0
  157.     move.w    D0,6(A0)    ;1st bitplane
  158.     swap    D0
  159.     move.w    D0,2(A0)
  160.     swap    D0
  161.  
  162.     add.l    #SCPL,D0
  163.     move.w    D0,14(A0)    ;2nd bitplane
  164.     swap    D0
  165.     move.w    D0,10(A0)
  166.     swap    D0
  167.  
  168.     add.l    #SCPL,D0
  169.     move.w    D0,22(A0)    ;3rd bitplane
  170.     swap    D0
  171.     move.w    D0,18(A0)
  172.     swap    D0
  173.  
  174.     add.l    #SCPL,D0
  175.     move.w    D0,30(A0)    ;4th bitplane
  176.     swap    D0
  177.     move.w    D0,26(A0)
  178.     swap    D0
  179.  
  180.     add.l    #SCPL,D0
  181.     move.w    D0,38(A0)    ;5th bitplane
  182.     swap    D0
  183.     move.w    D0,34(A0)
  184.     swap    D0
  185.  
  186.     add.l    #SCPL,D0
  187.     move.w    D0,46(A0)    ;6th bitplane
  188.     swap    D0
  189.     move.w    D0,42(A0)
  190.     swap    D0
  191.  
  192.     add.l    #SCPL,D0
  193.     move.w    D0,54(A0)    ;7th bitplane
  194.     swap    D0
  195.     move.w    D0,50(A0)
  196.     swap    D0
  197.  
  198.     add.l    #SCPL,D0
  199.     move.w    D0,62(A0)    ;8th bitplane
  200.     swap    D0
  201.     move.w    D0,58(A0)
  202.     swap    D0
  203.  
  204.     rts
  205.  
  206. ;+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
  207.  
  208. LoadPicture:
  209.     move.l    #FileName,d1
  210.     move.l    #MODE_OLDFILE,d2
  211.     CALLDOS    Open
  212.     move.l    d0,PicHandle
  213.  
  214.     move.l    PicHandle,D1
  215.     move.l    ScrBuffer,D2
  216.     move.l    #SCL,D3
  217.     CALLDOS    Read
  218.  
  219.     move.l    PicHandle,d1
  220.     CALLDOS Close
  221.  
  222.     rts
  223.  
  224.  
  225. ;+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
  226.  
  227.  
  228. WaitLMB:
  229.     btst    #6,$bfe001
  230.     bne    WaitLMB
  231.     rts
  232.  
  233. WaitRMB:
  234.     btst    #10,POTINP
  235.     bne    WaitRMB
  236.     rts
  237.  
  238.  
  239.  
  240. ;*****************************************************************
  241.  
  242. ;-------------------------------------------------------------------
  243. ; Data Zone
  244. ;-------------------------------------------------------------------
  245.  
  246. GFX_Name:    dc.b 'graphics.library',0
  247. Intuition_Name:    dc.b 'intuition.library',0
  248. DOS_Name:    DOSNAME
  249. FileName:    dc.b '256c_hi.raw',0
  250.     CNOP 0,2
  251.  
  252. PicHandle:    dc.l 0        ;File Handle.
  253. OLDCOP:        dc.l 0        ;System COP1LC.
  254. OLDCOP2:    dc.l 0        ;System COP2LC.
  255. OLDINTENA:    dc.w 0        ;System INTENA.
  256. OLDDMACON:    dc.w 0        ;System DMACON.
  257. _GFXBase:    dc.l 0
  258. Intuition_Base:    dc.l 0
  259. _DOSBase:    dc.l 0
  260. ScrBuffer:    dc.l 0        ;Screen memory pointer.
  261.  
  262.     CNOP 0,4
  263.  
  264.     Section data,DATA_C
  265.  
  266. COP0:
  267.     DC.W $01FC,$C003            ;FMODE
  268.     dc.w $0100,$0201,$0180,$0000,$ffff,$fffe
  269.  
  270.  
  271.  
  272. COPA:
  273.     dc.w $0001,$fffe,$0100,$0201
  274.     dc.w $0180,$0000
  275.  
  276.     DC.W $0106,$0CE1    ;Set up Palette
  277.     DC.W $0180,$0000,$0182,$0BCD,$0184,$0ABC,$0186,$09BB
  278.     DC.W $0188,$07AA,$018A,$0699,$018C,$0588,$018E,$0577
  279.     DC.W $0190,$0466,$0192,$0112,$0194,$0123,$0196,$0234
  280.     DC.W $0198,$0DCB,$019A,$0DEF,$019C,$0DDD,$019E,$0FFF
  281.     DC.W $01A0,$0BDF,$01A2,$0DBA,$01A4,$08CF,$01A6,$0ADF
  282.     DC.W $01A8,$0DEE,$01AA,$07CE,$01AC,$08BE,$01AE,$0ACE
  283.     DC.W $01B0,$05BD,$01B2,$06AC,$01B4,$0365,$01B6,$06AB
  284.     DC.W $01B8,$06BD,$01BA,$08CE,$01BC,$08AB,$01BE,$0789
  285.  
  286.     DC.W $0106,$2CE1
  287.     DC.W $0180,$029E,$0182,$029E,$0184,$029E,$0186,$03AE
  288.     DC.W $0188,$04AE,$018A,$05AE,$018C,$06AE,$018E,$06AE
  289.     DC.W $0190,$07BE,$0192,$08BE,$0194,$08BE,$0196,$09BE
  290.     DC.W $0198,$09BE,$019A,$09CE,$019C,$0ACE,$019E,$0ACE
  291.     DC.W $01A0,$0ADE,$01A2,$0ADE,$01A4,$0ADE,$01A6,$0BDE
  292.     DC.W $01A8,$0BDE,$01AA,$0CDD,$01AC,$06BC,$01AE,$06BC
  293.     DC.W $01B0,$06BC,$01B2,$06CC,$01B4,$06CC,$01B6,$06CC
  294.     DC.W $01B8,$06DC,$01BA,$06DC,$01BC,$06DC,$01BE,$06DC
  295.  
  296.     DC.W $0106,$4CE1
  297.     DC.W $0180,$0300,$0182,$0400,$0184,$0600,$0186,$0700
  298.     DC.W $0188,$0800,$018A,$0A00,$018C,$0B00,$018E,$0C00
  299.     DC.W $0190,$0D30,$0192,$0020,$0194,$0030,$0196,$0030
  300.     DC.W $0198,$0040,$019A,$0050,$019C,$0050,$019E,$0160
  301.     DC.W $01A0,$0160,$01A2,$0170,$01A4,$0270,$01A6,$0280
  302.     DC.W $01A8,$0281,$01AA,$0391,$01AC,$03A1,$01AE,$0221
  303.     DC.W $01B0,$0342,$01B2,$0453,$01B4,$0564,$01B6,$0675
  304.     DC.W $01B8,$0796,$01BA,$08A7,$01BC,$0AB8,$01BE,$0BD9
  305.  
  306.     DC.W $0106,$6CE1
  307.     DC.W $0180,$0999,$0182,$0898,$0184,$0688,$0186,$0587
  308.     DC.W $0188,$0487,$018A,$0376,$018C,$0E09,$018E,$0DEE
  309.     DC.W $0190,$0EFF,$0192,$0841,$0194,$0F0F,$0196,$054C
  310.     DC.W $0198,$083A,$019A,$0000,$019C,$0100,$019E,$0111
  311.     DC.W $01A0,$0222,$01A2,$0332,$01A4,$0433,$01A6,$0544
  312.     DC.W $01A8,$0554,$01AA,$0665,$01AC,$0766,$01AE,$0877
  313.     DC.W $01B0,$0987,$01B2,$0998,$01B4,$0A99,$01B6,$0BAA
  314.     DC.W $01B8,$0CBB,$01BA,$0DCC,$01BC,$0DDC,$01BE,$0EED
  315.  
  316.     DC.W $0106,$8CE1
  317.     DC.W $0180,$0456,$0182,$0466,$0184,$0466,$0186,$0477
  318.     DC.W $0188,$0577,$018A,$0587,$018C,$0588,$018E,$0588
  319.     DC.W $0190,$0698,$0192,$0699,$0194,$06A9,$0196,$0540
  320.     DC.W $0198,$0540,$019A,$0860,$019C,$0FD0,$019E,$05AC
  321.     DC.W $01A0,$059B,$01A2,$059B,$01A4,$049A,$01A6,$049A
  322.     DC.W $01A8,$0499,$01AA,$0399,$01AC,$0389,$01AE,$0388
  323.     DC.W $01B0,$0287,$01B2,$0287,$01B4,$0276,$01B6,$0026
  324.     DC.W $01B8,$003A,$01BA,$004C,$01BC,$005E,$01BE,$007F
  325.  
  326.     DC.W $0106,$ACE1
  327.     DC.W $0180,$0110,$0182,$0211,$0184,$0221,$0186,$0322
  328.     DC.W $0188,$0332,$018A,$0432,$018C,$0433,$018E,$0543
  329.     DC.W $0190,$0544,$0192,$0654,$0194,$0655,$0196,$0765
  330.     DC.W $0198,$0866,$019A,$0876,$019C,$0977,$019E,$0987
  331.     DC.W $01A0,$0A98,$01A2,$0A98,$01A4,$0AA9,$01A6,$0BAA
  332.     DC.W $01A8,$0BBA,$01AA,$0CBB,$01AC,$0CCC,$01AE,$0DDC
  333.     DC.W $01B0,$0E40,$01B2,$0E50,$01B4,$0E60,$01B6,$0E70
  334.     DC.W $01B8,$0E90,$01BA,$0EA0,$01BC,$0EB0,$01BE,$0EC0
  335.  
  336.     DC.W $0106,$CCE1
  337.     DC.W $0180,$0557,$0182,$0556,$0184,$0555,$0186,$0555
  338.     DC.W $0188,$0544,$018A,$0544,$018C,$0DFF,$018E,$0315
  339.     DC.W $0190,$0000,$0192,$0111,$0194,$0111,$0196,$0222
  340.     DC.W $0198,$0333,$019A,$0333,$019C,$0444,$019E,$0555
  341.     DC.W $01A0,$0555,$01A2,$0666,$01A4,$0777,$01A6,$0777
  342.     DC.W $01A8,$0888,$01AA,$0999,$01AC,$0999,$01AE,$0AAA
  343.     DC.W $01B0,$0BBB,$01B2,$0BBB,$01B4,$0CCC,$01B6,$0DDD
  344.     DC.W $01B8,$0DDD,$01BA,$0EEE,$01BC,$0FFF,$01BE,$0FFF
  345.  
  346.     DC.W $0106,$ECE1
  347.     DC.W $0180,$0A33,$0182,$074C,$0184,$0528,$0186,$00F0
  348.     DC.W $0188,$08BE,$018A,$08CE,$018C,$0D64,$018E,$0D75
  349.     DC.W $0190,$0E76,$0192,$0E87,$0194,$0EA9,$0196,$0EBA
  350.     DC.W $0198,$0FCB,$019A,$0FDD,$019C,$0FEE,$019E,$0FFF
  351.     DC.W $01A0,$0C53,$01A2,$0833,$01A4,$0422,$01A6,$0633
  352.     DC.W $01A8,$0743,$01AA,$0844,$01AC,$0954,$01AE,$0B65
  353.     DC.W $01B0,$0C76,$01B2,$0EC2,$01B4,$0CB2,$01B6,$0BA2
  354.     DC.W $01B8,$0A92,$01BA,$0982,$01BC,$0872,$01BE,$0762
  355.  
  356.  
  357.     dc.w $1001,$fffe            ;Start!
  358.  
  359. COPA_PLANES:                    ;Bitplanes pointers
  360.     dc.w $00e0,$0000,$00e2,$0000
  361.     dc.w $00e4,$0000,$00e6,$0000
  362.     dc.w $00e8,$0000,$00ea,$0000
  363.     dc.w $00ec,$0000,$00ee,$0000
  364.     dc.w $00f0,$0000,$00f2,$0000
  365.     dc.w $00f4,$0000,$00f6,$0000
  366.     dc.w $00f8,$0000,$00fa,$0000
  367.     dc.w $00fc,$0000,$00fe,$0000
  368.  
  369.     DC.W $010C,$0011            ;BPLCON4
  370.     dc.w $008e,$3d4b            ;DIWSTRT
  371.     DC.W $0100,$0251            ;BPLCON3
  372.     DC.W $0104,$0224            ;BPLCON2
  373.     DC.W $0106,$0CE1            ;BPLCON3
  374.     dc.w $0090,$3DEB            ;DIWSTOP
  375.     dc.w $0092,$0018            ;DDFSTRT
  376.     dc.w $0094,$0068            ;DDFSTOP
  377.     DC.W $0102,$00AA            ;BPLCON1
  378.  
  379.     dc.w $0108,-8,$010a,-8            ;MODULO
  380. ;    dc.w $0108,-8,$010a,-8-80        ;<-Try This!
  381.  
  382.     DC.W $01E4,$0200
  383.     DC.W $01fc,$c007            ;FMODE
  384.  
  385.     dc.w $ffff,$fffe
  386.  
  387.  
  388. ChipEnd:
  389.  
  390. END:
  391.  
  392. ;-------------------------------------------------
  393.  
  394.